package com.hk.service.impl;

import com.hk.dao.NavDao;
import com.hk.model.Document;
import com.hk.model.Nav;
import com.hk.service.INavService;
import com.hk.utils.Io;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: KangWang
 * Date: 2021/5/17 10:19
 * State：导航栏业务逻辑层
 */
public class NavServiceImpl implements INavService {

    @Override
    public List<Nav> findAllNav(String path) {
        NavDao navDao = new NavDao();
        List<Nav> navs = navDao.findAllNav();
//      1、存储路径  2、文件夹 3、文件
        Document document = new Document(path,"Nav", "Nav.txt");
//      检索或创建文件夹和文件并写入数据
        writeData(navs,document);
//        读取数据
        navs = (List<Nav>)readData(document);
        if (navs == null && navs.isEmpty()) {
            System.out.println("没有数据");
            return null;
        }
        return navs;
    }

    /**
     * 读取数据
     * @param document
     * @return
     */
    @Override
    public List<?> readData(Document document) {
        //    根据该对象内多少属性进行转化划分
        final int count = 3;
        List<Nav> navs = new ArrayList<>();
        List<String> list = Io.readData(document);
//        System.out.println("获取的数据："+list);
//        count :每组数据一共有几列
//        进行类型转化
        for (int i = 0; i < list.size(); i = i+count) {
            Nav nav = new Nav(Integer.parseInt(list.get(i)),list.get(i+1),list.get(i+2));
            navs.add(nav);
        }
        return navs;
    }

    /**
     * 写入数据
     * @param navs
     * @param document
     */
    @Override
    public void writeData(List<?> navs, Document document) {
        //        写入数据
        List<Nav> navs1 = (List<Nav>) navs;
        List<String> list = new ArrayList<>();
//        按照面向对象要求，每列写入
        for (Nav nav : navs1) {
            list.add(String.valueOf(nav.getNavId()));
            list.add(nav.getNavName());
            list.add(nav.getNavUrl());
        }
//        System.out.println("字符串导航栏"+list);
        Io.writeData(list,document);
    }

}